perm filename SPRINT.FAI[IRC,LCS] blob sn#404800 filedate 1978-12-15 generic text, type T, neo UTF8
	TITLE SPRINT 
	INTERNAL PRINT,IFIX,FLOAT,FORNAM,RNDINT,RAND,PARAM
	EXTERNAL .COMM.,C,P,PL,FILES.	    ;WRITING ON DSK (DEV.1 ONLY!)

;FORTRAN CALLABLE RANDOM NUMBER GENERATOR
;
;USE    CALL RNDINT   TO INITIALIZE THE GENERATOR
;                     (THE GENERATOR IS LOADED INITIALIZED)
;USE    RAND(XL,XH)   AS A FUNCTION TO RETURN THE NEXT 
;                     RANDOM NUMBER BETWEEN XL AND XH
;                     (XL,XH ARE FLOATING POINT,RAND RETURNS
;		      FLOATING POINT)
;
RNDINT:	0
	MOVE 0,[756132257563]
	MOVEM 0,R1
	ADDI 0,2
	MOVEM 0,R2
	JRA 16,0(16)
R1:	756132257563
R2:	756132257565

RAND:	0
	MOVEM 1,TEMP
	MOVE 0,@0(16)
	MOVE 1,@1(16)
	FSBR 1,0
	MOVEM 0,LLIM#
	MOVE 0,R1
	ADD 0,R2
	EXCH 0,R2
	MOVEM 0,R1
	LSH 0,-11
	FSC 0,200
	FMP 0,1
	FAD 0,LLIM
	MOVE 1,TEMP
	JRA 16,2(16)
TEMP:	0

IFIX:	0		;REMOVE THESE 6 LINES AT OTHER SITES.
	KIFIX 0,@(16)
	JRA 16,1(16)
FLOAT:	0
	FLTR 0,@(16)
	JRA 16,1(16)
A←1
B←2
CC←3
D←4
PP←17
LOOP:	PUSHJ	PP,TYI			; THIS PRINTS FILE FOR22.DAT ON LPT
	POPJ	PP,			; AND THEN ZEROS FOR22.DAT.
	CAIN	A,15
	JRST	LOOP
	CAIN	A,12
	JRST	MK1
	CAIN	A,53
	JRST	MK2
	TRNN	B,2
	JRST	OUTIT
	MOVEI	B,0
	MOVE	CC,A
	MOVEI	A,15
	PUSHJ	PP,TYO
	MOVEI	A,12
	PUSHJ	PP,TYO
	MOVE	A,CC
OUTIT:	PUSHJ	PP,TYO
	JRST	LOOP

MK1:	TRO	B,2
	JRST	LOOP

MK2:	TRNN	B,2
	JRST	OUTIT
	MOVEI	B,0
	JRST	LOOP

PRINT:	0
	INIT	12,0
	SIXBIT	/LPT/
	XWD	OBUF,
	CALLI	12
	OUTBUF	12,2

COMDLP:	PUSHJ	PP,DNIT
	PUSHJ	PP,LOOP

EXIT:	MOVEI A,14
	RELEASE	11,0
	RELEASE 12,0
	JRA 16,(16)

DNIT:	RELEASE	11,0
	INIT	11,0
	SIXBIT	/DSK/
	IBUF
	CALLI	12
	SETZM FILNAM+3
	LOOKUP	11,FILNAM
	CALLI	12
	INBUF	11,2
	POPJ	PP,
TYI:	SOSLE	IBUF+2
	JRST	OKIN
	IN	11,0
	JRST	OKIN
	STATZ	11,20000
	POPJ	PP,

	CALLI	12

OKIN:	ILDB	A,IBUF+1
	JUMPE	A,TYI
	AOS	(PP)
	POPJ	PP,

TYO:	SOSG	OBUF+2
	OUTPUT	12,0
	IDPB	A,OBUF+1
	POPJ	PP,

IBUF:	BLOCK	3
OBUF:	BLOCK	3
FILNAM:	SIXBIT/FOR22/
	SIXBIT/DAT/
	0
	0
PDL:	BLOCK 10

FORNAM:	0			;CALL FORNAM(NAME,EXT)
;CHANGES NAMES TO SIXBIT        THIS IS TO PUT EXTENSIONS OTHER
	MOVE 0,@0(16)		;THAN .DAT ON OUTPUT
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
INTF3:	MOVE 2,[POINT 6,NAM]
	SETZM NAM
	MOVEI 3,5
INTF1:	ILDB 0,1
	CAIN 0," "
	JRST INTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
INTF2:	MOVE 0,@1(16)
	MOVEM 0,EX#
	MOVE 1,[POINT 7,EX]
EXTF3:	MOVE 2,[POINT 6,EXT]
	SETZM EXT
	MOVEI 3,5
EXTF1:	ILDB 0,1
	CAIN 0," "
	JRST EXTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,EXTF1
EXTF2:	MOVE 0,NAM#
	MOVEM 0,FILES.
	MOVE 0,EXT#
	MOVEM 0,FILES.+1
	JRA 16,2(16)

;C	FUNCTION PARAM(X,K)
;C	COMMON J,L  /P/P(1) /PL/PL(1) /C/T,NWZZ,IT3,T6,NW,TDUR,A,
;C	1 T2,T4,BY,KODE,NPAR,LP,TBG,AC,NPA,BX,IDF,PM,NM,PAR,PX2
PARAM:	0	;C	K=0
	SETZ  2,
; IF K IS NOT ZERO UPON RETURN, THEN WE'VE FOUND INFO IN OTHER PARAM.
	MOVE 0,@(16)	;C	PARAM=X
	CAMG 0,[-9999.0] ;CC	IF(X.GT.-9999.0)RETURN
	CAMG 0,[-10000.0]  ;CC	IF(X.LE.-10000.0)RETURN
	JRST PAR2   	;GO TO PAR2
	MOVN  2,0
	FADR 2,[-9999.0]  ;CC	K=-(X+9999.0)*100.+.1	
	FMPR 2,[100.0]
	FADR 2,[0.1]	;FOR ROUND-OFF
	KIFIX 2,2
	MOVE 0,P-1(2)	;CC	PARAM=P(K)   ;AC 0 = PARAM
; GET DATA FROM PARAM K
	MOVE 1,PL-1(2)	;CC	PM=PL(K)
	MOVEM 1,C+=18
	MOVE 1,.COMM.+1	;CC	IF(L.NE.2)RETURN  ;;L=LPAR (CURRENT PARAM#)
	CAIE 1,2	;C L=CALLING PARAM NUM., K=PARAM REFERRED TO.
	JRST PAR2	;GO TO PAR2
	CAIN 2,2	;CC	IF(K.EQ.2)PARAM=PX2
	MOVE 0,C+=21;MUST USE 'UNPROCESSED' FORM OF P2 (I.E. NO 'TEMPO' CHANGES)
PAR2:	MOVEM 2,@1(16)	;SEND BACK VALUE OF K
	JRA 16,2(16)  ;CC	END
	END